Ruby on rails 如何通过与条件的关系添加has_one?

Ruby on rails 如何通过与条件的关系添加has_one?,ruby-on-rails,ruby,model,ruby-on-rails-5,Ruby On Rails,Ruby,Model,Ruby On Rails 5,我有一个叫PersonProject的模型。该模型包括以下属性:项目经理、开发人员、项目和开发人员休假。以下是型号代码: class PersonProject < ApplicationRecord belongs_to :project_manager, -> { left_joins(:roles).where("roles.name = 'PM'") }, :class_name => 'User' belongs_to :developer, ->

我有一个叫PersonProject的模型。该模型包括以下属性:项目经理、开发人员、项目和开发人员休假。以下是型号代码:

class PersonProject < ApplicationRecord
    belongs_to :project_manager, -> { left_joins(:roles).where("roles.name = 'PM'") }, :class_name => 'User'
    belongs_to :developer, -> { left_joins(:roles).where("roles.name = 'Developer'") }, :class_name => 'User'
    belongs_to :project
end
class PersonProject{left\u joins(:roles)。其中(“roles.name='PM'”),:class\u name=>'User'
属于_to:developer,->{left_joins(:roles)。其中(“roles.name='developer')},:class_name=>'User'
属于:项目
结束
假期用户模型代码的一部分:

class User < ApplicationRecord
  has_many :vacations, class_name: 'Events::Vacation', inverse_of: :user, dependent: :destroy
end
class用户
当创建PersonProject对象并添加或更改开发人员时,我需要自动添加一个开发人员休假,该休假必须是开发人员的最后一次休假(developer\u instance.vacations.last)

我怎么做? 提前感谢。

尝试添加范围

比如:

has_one :developer_vacation, -> { order(id: :desc) }, through: ..., class_name: ...
我不确定,我猜activerecord得到了第一个作用域,文档中不清楚。

尝试添加一个作用域

比如:

has_one :developer_vacation, -> { order(id: :desc) }, through: ..., class_name: ...

我不确定,我猜activerecord获得了第一个作用域,文档中不清楚。

这里有一个:wahatever\u如果条件满足
@noname您能提供示例吗?请
has\u one:vaction,class\u name:'Events::Vacations',除非vaction。last\u developer\u vaction?
诸如此类,只是回答问题(如何通过与条件的关系添加has\u one?),不确定代码是否有效,但是你应该得到一个idea@noname我不明白你的想法,开发人员的最后一次休假是如何自动添加到person_项目obj的,当使用开发人员或obj dev属性创建的obj被更新时。我只是告诉你如何将条件放入模型中,现在你的工作是找出正确的条件。我不会给你整个脚本。
这里有没有一个:wahatever\u如果有条件的话
@noname你能提供一个例子吗?请
has\u one:vaction,class\u name:'Events::Vacations',除非vaction。last\u developer\u vaction?
诸如此类,只是回答问题(如何通过与条件的关系添加has\u one?),不确定代码是否有效,但是你应该得到一个idea@noname我不明白你的想法,开发人员的最后一次休假是如何自动添加到person_项目obj的,当使用开发人员或obj dev属性创建的obj被更新时。我只是告诉你如何将条件放入模型中,现在你的工作是找出正确的条件。我不会给你整个剧本。