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