更新其他模型中的属性

时间:2016-06-02 21:49:41

标签: ruby-on-rails ruby ruby-on-rails-4 model

我有两个表/模型(用户和假日)。用户有一定数量的假期。在假日模型中,用户可以预订多个假期(整数)。

实施例: 1)约翰总共有10个假期积分 2)约翰预订4个假期

结果:John剩下6个假期

我知道这与在User中添加方法并将假期传递到其中有关。

如何扣除节假日信用卡预订的假期?

2 个答案:

答案 0 :(得分:1)

如果每个用户都有holiday属性/字段,那么通过两个表之间的关联可以计算出值。

设置数据库时,可以定义假日信用的默认值。例如:

如果要添加一列来保存值:

add_column :users, :holiday_credit, :integer, :default => 10

现在每个用户都会在您的数据库中拥有默认的假期信用。这也可以在对象初始化期间的对象创建时完成。

要更新值,User模型中的方法可以这样写:

class User < ActiveRecord::Base
  def calculate_holiday_credits
    self.holiday_credit = default_value - Holiday.find(self.id).count
  end
end

可以修改该功能以满足您的需求,但我希望这能为您提供一般的想法。

简而言之,您希望在另一个表格中搜索用户模型的ID显示的次数,并使用结果进行计算。

预订机制与此相反。在假日表中,您希望创建一个方法,在预订假期的用户的数据库中创建一个条目,这样当用户运行上面详述的方法时,该值将适当更新。

答案 1 :(得分:1)

在用户模型中:

# assuming, you have a method `holidays_booked`,
# that returns the number of booked holidays
def holidays_left
  10 - holidays_booked
end

就是这样。