0
我有一个具有以下关联一个membership
型号:如何获得这个foreign_key关联关联的另一面?
class Membership < ActiveRecord::Base
belongs_to :family_tree
belongs_to :member
belongs_to :inviter, class_name: "User", foreign_key: "user_id"
belongs_to :invited, class_name: "User", foreign_key: "invited_id"
end
这是架构:
# == Schema Information
#
# Table name: memberships
#
# id :integer not null, primary key
# family_tree_id :integer
# user_id :integer
# relation :string(255)
# member_id :integer
# invited_id :integer
#
而且我User
模式,我有以下几点:
class User < ActiveRecord::Base
has_many :memberships
end
所以我可以成功地为2个不同的用户分配1条记录,例如:
[7] pry(#<RSpec::ExampleGroups::User>)> membership
=> #<Membership id: 90, family_tree_id: 1049, user_id: 779, created_at: "2015-10-29 15:24:02", updated_at: "2015-10-29 15:24:02", relation: "sister", member_id: 108, connection_sent_at: nil, connection_responded_at: nil, connect_send_limit: nil, connect_times_sent: nil, connected: nil, connect_type: nil, request_status: nil, connection_removed_at: nil, invited_id: 777>
[8] pry(#<RSpec::ExampleGroups::User>)> membership.family_tree
=> #<FamilyTree id: nil, name: "Enrico McGlynn", user_id: 777, created_at: "2015-10-29 15:24:02", updated_at: "2015-10-29 15:24:02">
[11] pry(#<RSpec::ExampleGroups::User>)> membership.inviter
=> #<User id: nil, email: "[email protected]", encrypted_password: "$2a$04$Ke.1sQ9mZ2ZP0Hxamg6NS.6zUoEHyolPbKJ1UfAlils...", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 0, current_sign_in_at: nil, last_sign_in_at: nil, current_sign_in_ip: nil, last_sign_in_ip: nil, created_at: "2015-10-29 15:24:02", updated_at: "2015-10-29 15:24:02", first_name: "Audie", confirmation_token: nil, confirmed_at: "2015-10-29 15:23:57", confirmation_sent_at: nil, unconfirmed_email: nil, invitation_relation: "quibusdam", avatar: nil, invitation_token: nil, invitation_created_at: nil, invitation_sent_at: nil, invitation_accepted_at: nil, invitation_limit: nil, invited_by_id: nil, invited_by_type: nil, invitations_count: 0, bio: "Quibusdam est laborum cupiditate modi et est. Nece...", last_name: "Feil", gender: 1>
[12] pry(#<RSpec::ExampleGroups::User>)> membership.invited
=> #<User id: nil, email: "[email protected]", encrypted_password: "$2a$04$jlFrLS6UlcchaJlsOAv4ne/5nYSxH.7Zdsvk5WZMd1w...", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 0, current_sign_in_at: nil, last_sign_in_at: nil, current_sign_in_ip: nil, last_sign_in_ip: nil, created_at: "2015-10-29 15:24:02", updated_at: "2015-10-29 15:24:02", first_name: "Annamae", confirmation_token: nil, confirmed_at: "2015-10-29 15:23:57", confirmation_sent_at: nil, unconfirmed_email: nil, invitation_relation: "eveniet", avatar: nil, invitation_token: nil, invitation_created_at: nil, invitation_sent_at: nil, invitation_accepted_at: nil, invitation_limit: nil, invited_by_id: nil, invited_by_type: nil, invitations_count: 0, bio: "Ut explicabo omnis facilis et. Dolor sunt enim et....", last_name: "Kshlerin", gender: 1>
我遇到的问题是当我尝试去其他方式时,即从该用户记录中查找与其关联的所有memberships
。它返回一个空数组。
[1] pry(#<RSpec::ExampleGroups::User>)> u1
=> #<User id: nil, email: "[email protected]", encrypted_password: "$2a$04$jlFrLS6UlcchaJlsOAv4ne/5nYSxH.7Zdsvk5WZMd1w...", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 0, current_sign_in_at: nil, last_sign_in_at: nil, current_sign_in_ip: nil, last_sign_in_ip: nil, created_at: "2015-10-29 15:24:02", updated_at: "2015-10-29 15:24:02", first_name: "Annamae", confirmation_token: nil, confirmed_at: "2015-10-29 15:23:57", confirmation_sent_at: nil, unconfirmed_email: nil, invitation_relation: "eveniet", avatar: nil, invitation_token: nil, invitation_created_at: nil, invitation_sent_at: nil, invitation_accepted_at: nil, invitation_limit: nil, invited_by_id: nil, invited_by_type: nil, invitations_count: 0, bio: "Ut explicabo omnis facilis et. Dolor sunt enim et....", last_name: "Kshlerin", gender: 1>
[9] pry(#<RSpec::ExampleGroups::User>)> u1.memberships
=> []
如何获得user.memberships
返回与user_id and invited_id
在memberships
模型相关的成员?
这是有道理的。我猜的一个问题是,在我接触到其他人之前...... y确实'has_many:memberships'不会返回任何记录,尽管有'user_id'记录。 – marcamillion
我注意到的一件事是返回的每个用户记录的'user.id'都是'nil'。这可能会导致这个问题?如果是这样,我该如何解决它? – marcamillion
呀'pry'表明'u1.id'是'nil' – AbM