-1

У меня проблема с пониманием того, как атрибуты «отправляются» на вложенную модель (ы), и если это возможно для модели с виртуальным attrubute тоже. У меня есть три модели:Rails вложенные модели и инициализация виртуальных атрибутов

class User < ActiveRecord::Base 
    ... 
    has_and_belongs_to_many :clearancegoods 
    has_many :clearanceitems, through: :user_clearanceitems_descriptions 
    has_many :user_clearanceitems_descriptions 
    ... 
end 

class Clearanceitem < ActiveRecord::Base 
    ... 
    has_many :users, through: :user_clearanceitems_descriptions 
    has_many :user_clearanceitems_descriptions 
    accepts_nested_attributes_for :user_clearanceitems_descriptions 
    ... 
    def user_id 
     @user_id 
    end 
    def user_id=(val) 
     @user_id = val 
    end 
end 

class UserClearanceitemsDescription < ActiveRecord::Base 
    belongs_to :user 
    belongs_to :clearanceitem 
end 

в консоли:

desc = User.find(5).user_clearanceitems_descriptions.new 
desc.user_id 
### result is 5 

item = User.find(5).clearanceitems.new 
item.user_id 
### result in nil 
+0

Вы должны уточнить, что вы пытаетесь выполнить с добавленным атрибутом user_id. – depquid

ответ

0

Если Clearanceitem может иметь много пользователей, то он может не иметь ни одного user_id, в противном случае этот атрибут должен иметь несколько значений. Если вы просто пытаетесь создать Clearanceitems, связанный с Пользователем, ActiveRecord будет автоматически создать связанную присоединиться к записи:

User.find(5).clearanceitems.create 
User.find(5).clearanceitems # Contains the Clearanceitem you just created 

Так просто удалить атрибут user_id из Clearanceitem.