Postgresql Rails作用域与属于并具有通过关系 class Employee
如何仅为具有特定员工可用性的时段创建范围?如果是,则将员工id传递到范围中Postgresql Rails作用域与属于并具有通过关系 class Employee,postgresql,ruby-on-rails-4,model,scope,Postgresql,Ruby On Rails 4,Model,Scope,如何仅为具有特定员工可用性的时段创建范围?如果是,则将员工id传递到范围中 class Employee < ActiveRecord::Base has_many :availabilities has_many :time_slots, through: :availabilities end class TimeSlot < ActiveRecord::Base belongs_to :availability has_one :employee,
class Employee < ActiveRecord::Base
has_many :availabilities
has_many :time_slots, through: :availabilities
end
class TimeSlot < ActiveRecord::Base
belongs_to :availability
has_one :employee, through: :availability
end
class Availability < ActiveRecord::Base
belongs_to :employee
has_many :time_slots
end
class时隙(employee_id){joins(:availability)。其中(“availabilities.employee_id=?”,employee_id)如果employee_id.present?}
结束
问题出在哪里?当我调用类似TimeSlot的东西时。对于\u employee(1),它没有返回TimeSlot检查生成的SQL,看看它是否是您所需要的,只是更新了范围并得到了此错误。ActiveRecord::StatementInvalid:PG::UndefinedTable:错误:表“availabilities”的子句条目中缺少@AndreyDefineko谢谢,我添加了正确的范围。
class TimeSlot < ActiveRecord::Base
belongs_to :availability
has_one :employee, through: :availability
scope :employee, -> (employee_id) { joins(:availability).where("availabilities.employee_id=?", employee_id) if employee_id.present? }
end