gpt4 book ai didi

ruby-on-rails - Rails has_many 通过条件,构建新的

转载 作者:行者123 更新时间:2023-12-04 23:26:29 25 4
gpt4 key购买 nike

我的用户和组织具有连接模型 UsersOrganisation。用户可能是组织的管理员 - 如果是,则 is_admin bool 值为 true。

如果我在数据库中手动设置 is_admin bool 值,Organisations.admins 会按我的预期工作。

在控制台,我可以做 Organisation.first.users << User.first并按照我的预期创建了一个 organizations_users 条目。

但是,如果我这样做 Organisation.first.admins << User.last它创建一个普通用户,而不是管理员,即连接表上的 is_admin bool 值设置不正确。

除了直接在连接表中创建条目之外,还有其他好的方法吗?

class User < ActiveRecord::Base

has_many :organisations_users
has_many :organisations, :through => :organisations_users

end

class Organisation < ActiveRecord::Base

has_many :organisations_users
has_many :users, :through => :organisations_users
has_many :admins, :through => :organisations_users, :class_name => "User",
:source => :user,
:conditions => {:organisations_users => {:is_admin => true}}

end

class OrganisationsUser < ActiveRecord::Base

belongs_to :organisation
belongs_to :user

end

最佳答案

您始终可以覆盖关联的 << 方法:

has_many :admins do

def <<(user)
user.is_admin = true
self << user
end

end

(代码没有被检查)

关于ruby-on-rails - Rails has_many 通过条件,构建新的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12158690/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com