我的设置:
class ServiceUser < ActiveRecord::Base
belongs_to :user
belongs_to :service
enum status: [ :unavailable, :available ]
end
class Service < ActiveRecord::Base
has_many :service_users
has_many :users, :through => :service_users
end
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
has_many :service_users
has_many :services, :through => :service_users
end
从ServiceUser模型我可以调用状态字段,在我的情况下可用且不可用。 在我的应用程序中,我列出了特定服务的所有用户:
@service.users
但现在我想从ServiceUser模型中显示每个用户的状态。最好的办法是什么?
另外,我想为ServiceUser模型创建一个表单,以便在服务和当前用户之间建立新关系:
ServiceUser.new(service_id: @service.id, user_id: current_user.id, status: 1)
我需要在表单中指定什么?
答案 0 :(得分:0)
构造一个哈希,其中user_id为键,值为状态
user_status = Hash[*@service.service_users.map{|su|[su.user_id, su.status] }.flatten]
现在您可以通过
获取每个用户的状态@service.users.each do |user|
p user_status[user.id]
end