我在理解如何将属性“发送”到嵌套模型时遇到问题,如果可以为虚拟attrubute模型执行此操作。我有三种模式:
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 :(得分:0)
如果Clearanceitem可以拥有多个用户,则它不能拥有单个user_id
,否则该属性必须具有多个值。如果您只是尝试创建与用户关联的Clearanceitems,ActiveRecord将自动创建关联的连接记录:
User.find(5).clearanceitems.create
User.find(5).clearanceitems # Contains the Clearanceitem you just created
所以只需从user_id
删除Clearanceitem
属性。