在Ruby on Rails中建立Has_Many through关系有各种参考,但关于如何处理关系的信息很少。有很多关系
我有以下变量一个用户表:
t.string "email", default: "", null: false
t.string "encrypted_password", default: "", null: false
t.string "reset_password_token"
t.datetime "reset_password_sent_at"
t.datetime "remember_created_at"
t.integer "sign_in_count", default: 0, null: false
t.datetime "current_sign_in_at"
t.datetime "last_sign_in_at"
t.string "current_sign_in_ip"
t.string "last_sign_in_ip"
t.string "confirmation_token"
t.datetime "confirmed_at"
t.datetime "confirmation_sent_at"
t.string "unconfirmed_email"
t.string "name"
t.datetime "created_at"
t.datetime "updated_at"
然后,我有一个维基表:
t.string "title"
t.datetime "published_at"
t.datetime "created_at"
t.datetime "updated_at"
t.text "body"
而且,我有一个关系表中加入二:
t.integer "wiki_id"
t.integer "user_id"
t.boolean "creator_created"
t.boolean "collaborator"
关系类属于其他类中的每一个:
belongs_to :users
belongs_to :wikis
其它两个具有的has_many,通过代码:
class User < ActiveRecord::Base
has_many :relationships
has_many :wikis, through: :relationships
,反之亦然。
所以我的问题是,现在是什么?我怎样才能调用这些不同的类和它们的变量? user.wiki似乎不起作用,或user.relationship.wiki;即使relationship.created_creator也会提取错误信息!
特别是,我希望能够找出用户是否创建了一个wiki,以便该用户可以编辑该wiki。我试着在用户模式来创建一个方法是:
def creator?(wiki, user)
Relationship.where(wiki_id: wiki.id, user_id:user.id).creator_created
end
当我把它从一个政策文件,我得到的错误:
undefined method `creator_created' for # <ActiveRecord::Relation::ActiveRecord_Relation_Relationship:0xbb19b84>
谁能帮助我用我的has_many ,通过关系?我如何可以参考与用户相关的wiki,或与两者相关的creator_created字段?
谢谢!
谢谢!不幸的是,我仍然收到错误“未初始化的常量User :: Wiki”。在Rails控制台中,我为用户(调用'User.connection'建立连接):Class“得到错误”NoMethodError:undefined method'wikis'。有任何想法吗? –
我意识到我没有指定一个用户,但即使当我(User.last),我得到了错误“NameError:未初始化的常量User :: Wiki” –
你是如此接近:)请参阅我的编辑。 Rails中的整个复数/单数业务非常随意。一旦你了解了惯例,它将成为第二天性。 – zetetic