假设你有这个结构:
class House < ActiveRecord::Base
has_many :rooms
accepts_nested_attributes_for :rooms
attr_accessible :rooms_attributes
end
class Room < ActiveRecord::Base
has_one :tv
accepts_nested_attributes_for :tv
attr_accessible :tv_attributes
end
class Tv
belongs_to :user
attr_accessible :manufacturer
validates_presence_of :user
end
请注意,不能故意访问 Tv 的用户。因此,您有一个三重嵌套表单,可让您在一个页面上输入房屋、房间和电视。
这是控制器的创建方法:
def create
@house = House.new(params[:house])
if @house.save
# ... standard stuff
else
# ... standard stuff
end
end
问题:您将如何user_id
为每台电视填充内容(它应该来自 current_user.id)?有什么好的做法?
这是我在此看到的catch22。
user_ids
直接填充到params
哈希中(它们非常嵌套)- 保存将失败,因为
user_ids
不可批量分配
- 保存将失败,因为
- #save 完成后为每台电视填充用户
- 保存将失败,因为
user_id
必须存在 - 即使我们绕过上述内容,电视也会有一段时间没有 id - 糟透了
- 保存将失败,因为
有什么体面的方法可以做到这一点吗?