Ruby on rails 3 如果对象有多个所属对象,如何创建该对象?
我有以下资料:Ruby on rails 3 如果对象有多个所属对象,如何创建该对象?,ruby-on-rails-3,activerecord,Ruby On Rails 3,Activerecord,我有以下资料: class Org < ActiveRecord::Base has_many :users has_many :entries end class Entry < ActiveRecord::Base belongs_to :org belongs_to :user validates_presence_of :entry_text end
class Org < ActiveRecord::Base
has_many :users
has_many :entries
end
class Entry < ActiveRecord::Base
belongs_to :org
belongs_to :user
validates_presence_of :entry_text
end
class User < ActiveRecord::Base
belongs_to :org
has_many :entries
validates_uniqueness_of :user_name
validates_presence_of :user_name, :length => { :minimum => 3 }
end
classorg{:minimum=>3}
结束
我可以创建组织和用户。。。如果有两个项目属于\u,如何创建项目?这个模式叫什么?我看不出有什么问题
@entry = Entry.create(:entry_text => "Hello World!")
现在,请提问以澄清您需要什么:
能否同时属于@entry
和org
?或者它只能属于其中一个user
应该至少属于其中一个吗@entry
@entry
应该只属于其中一个,那么您应该使用多态性
类条目true
验证是否存在:条目文本
结束
类Org:textable
结束
类用户:textable
验证:用户名的唯一性
验证是否存在:user\u name,:length=>{:minimum=>3}
结束
双嵌套资源很棘手。用户的诀窍通常是将其保留在所需的进入路径之外
你的问题有点宽泛,但如果你提供更多信息,人们会更好地帮助你。此外,我建议您在用户管理系统中使用gem designe。由于您使用的是“用户”,我假设您希望来自组织的用户创建条目。创建的条目将是org的一部分,用户将是会话的当前用户。很抱歉,如果我错误地假设了这一点
您的routes.rb文件可以如下所示(假设rails 3):
资源:组织做什么
资源:条目
结束
然后,入口控制器的创建过程如下所示:
@entry = @org.entries.new(params[:topic])
@entry.user = current_user #or however you are managing the current user's session.
您希望通过创建一个方法来为整个类设置组织,该方法加载当前组织并执行before_过滤器:loadOrg
def loadOrg
@org = Org.find(params[:id])
end
当然,这是假设您的路径类似于:/org/(id)/entry/(entry\u id)
而不是
/组织/(id)/用户/(用户id)/条目/(条目id)
在我看来,这是不必要的,可能会导致更多的问题。您始终可以创建一个userpage模型,按用户调用所有条目,但默认路由不一定要在路径中包含用户
def loadOrg
@org = Org.find(params[:id])
end