私のモデルではOrganisation
has_many :users
、 と とUser
has_and_belongs_to_many :roles
とRole
がname
ありhas_and_belongs_to_many :users
ます。
私のOrganisation
クラスでは、を持っている人に属する をget_admin
取得することになっているメソッドがあります。そのようです:User
Organisation
Role
'admin'
def get_admin
return self.users.with_role('admin')
end
ActiveRecord::Relation
残念ながら、これはではなく オブジェクトを返しますUser
。
.first
私はそのように行末に追加しようとしました
def get_admin
return self.users.with_role('admin').first
end
しかし、私が得るのはSQLエラーだけです
ActiveRecord::StatementInvalid: SQLite3::SQLException: no such column: role.name: SELECT "users".* FROM "users" WHERE ("users".organisation_id = 2) AND (role.name == 'admin') LIMIT 1
私のスキーマは次のように定義されています。
create_table "roles", :force => true do |t|
t.string "name", :null => false
end
create_table "users", :force => true do |t|
t.string "username", :null => false
t.integer "organisation_id"
end
create_table "roles_users", :id => false, :force => true do |t|
t.integer "user_id"
t.integer "role_id"
end
create_table "organisations", :force => true do |t|
t.string "name", :null => false
t.string "website", :null => false
end
Organisation
のget_admin
メソッドを (次のように) 実際に返すように書き直すにはどうすればよいUser
ですか?
def get_admin
return self.users.with_role('admin')
end
乾杯
デイブ