在我的模型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
干杯
戴夫