我目前正在做一个项目,我们正在使用一些宝石,例如:rails admin,devise,cancancan和ability。
我有2张桌子。活动行程和行程。表1中的一个列是:order,在我的行程中,我想调用ActivityItinerary中的订单列,在保存之前设置默认值。
我在编辑现有行程时遇到问题,错误是“订单不能为空”
但是当我创建一个新的活动行程然后再次尝试编辑时,它现在会起作用,因为在我的活动行程中有订单字段
问题:如何从行程中获取订单栏?这样我就可以为该列设置默认值
已编辑
注意:我尝试使用pluck来获取ActivityItinerary中的订单列
问题:为什么它没有在activityItinerary中为我的订单栏添加默认值?
表2 /表2模型
class Itinerary < ApplicationRecord
belongs_to :user, foreign_key: :created_by
belongs_to :activity
before_save :default_value, :count_all_activity
after_save
# has_many :activity_itineraries, foreign_key: :created_by
has_many :activity_itineraries, inverse_of: :itinerary
has_many :activities, through: :activity_itineraries
validates :user, presence: true
validates :title, presence: true, length: { maximum: 20 }
validates :no_of_days, presence: true,
:numericality => true
更新:
我已完成第一部分,即在保存之前添加订单的默认值。这是我的更新文件。
注意:我有一个错误未定义方法`count'为1:Integer。
活动行程
class ActivityItinerary < ApplicationRecord
belongs_to :itinerary, inverse_of: :activity_itineraries
belongs_to :activity, inverse_of: :activity_itineraries
before_save :count_all_activity_itinerary
validates :order, presence: true
validates :activity_id, presence: true
after_initialize :set_defaults, unless: :persisted?
private
def set_defaults
self.order ||= 1 #
end
def count_all_activity_itinerary
order.count(:conditions => itinerary.id)
end
end
另一个问题:我如何计算itinerary_id所有的活动路线。这个错误的原因是什么?