Đã dành cả ngày trên Google nhưng không thể tìm thấy câu trả lời. : \Đường ray: Có và thuộc về nhiều (HABTM) - tạo liên kết mà không tạo các bản ghi khác
Tôi có mối quan hệ HABTM giữa Người dùng và Core_Values.
class CoreValue < ActiveRecord::Base
has_and_belongs_to_many :users
class User < ActiveRecord::Base
has_and_belongs_to_many :core_values
Trong điều khiển của tôi, tôi cần phải làm hai việc riêng biệt:
- Nếu một CoreValue không tồn tại, tạo một hình mới và kết hợp nó với một người dùng id cho trước, và
- Giả Tôi biết một CoreValue cụ thể đã tồn tại, tạo liên kết mà không cần tạo bất kỳ CoreValue hoặc Người dùng mới nào
Cho # 1, tôi có điều này để hoạt động:
User.find(current_user.id).core_values.create({:value => v, :created_by => current_user.id})
Điều này tạo ra một CoreValue mới với: giá trị và: created_by và tạo liên kết.
Đối với # 2, tôi đã thử một vài điều, nhưng dường như không thể tạo ra liên kết CHỈ.
Cảm ơn sự giúp đỡ của bạn!
Cảm ơn! Không biết core_values là một mảng - và chắc chắn không biết thêm vào mảng sẽ tạo ra một INSERT. Ngọt! Bất kỳ cách nào để chỉ tạo liên kết nếu bản ghi không tồn tại? Tôi sẽ xem xét các phương pháp mảng, tôi đoán vậy? Có lẽ current_user.core_values.include? – jmccartie
@jmccartie Đó có thể là một cách để làm điều đó, vâng. Để làm rõ, tôi cảm thấy tôi nên thêm rằng 'core_values' không phải là * luôn luôn * một mảng - như bạn đã biết, bạn có thể gọi' core_values.create' mà không phải là một phương thức mảng hợp lệ. Một định nghĩa tốt hơn sẽ là nó "hoạt động như một mảng." – vonconrad
cảm ơn bạn đã theo dõi. bao gồm? sẽ không hoạt động. cố gắng tìm ra nếu tôi có thể tìm thấy id core_value mới bên trong current_user.core_values ... hmmmm – jmccartie