0
我在助手文件中有一個非常簡單的方法。它需要一個對象(tool
)has_many services
。每個service
有一個:completed
日期。我想要這種方法使用內置的關聯來檢查每個service
。如果service.name
包含字符串「年度」和service.completed.year == DateTime.now.year
,那麼方法應該返回true,否則它應該返回false。下面是我在tools_helper.rb文件的方法:助手中的Rails方法在控制檯中不起作用
def annual_service?
self.services.each do |service|
if (service.name =~ /annual/) && (service.completed.year == DateTime.now.year)
return true
end
end
end
Too.rb型號:
class Tool < ActiveRecord::Base
has_many :repairs
has_many :services
has_many :expended_parts, through: :services
has_many :service_types, through: :services
belongs_to :category
belongs_to :location
accepts_nested_attributes_for :repairs
accepts_nested_attributes_for :services
validates :serial, :uniqueness => true
validates :serial, :presence => true
end
Service.rb型號:
class Service < ActiveRecord::Base
before_destroy :replace_parts
belongs_to :tool
belongs_to :service_type
has_many :expended_parts, dependent: :destroy
has_many :parts, through: :expended_parts
after_create :withdraw_parts
default_scope order('due_date DESC')
end
我能做到這一點Rails的控制檯上:
t = Tool.find(16)
t.services.each do |service|
if (service.name =~ /annual/) && (service.completed.year == DateTime.now.year)
puts "true"
end
end
returns => true
但是如果我這樣做:
t.annual_service?
returns => false
我沒有得到一個unknown method
錯誤,如果我做的:
t.respond_to? :annual_service
returns => true
我失去了一些東西簡單。但似乎無法弄清楚。
啊!我一直忘記這個事實。我在視圖中使用這個。有沒有辦法在控制檯中加載它來測試它? – Beartech
我的解決方案能工作嗎?將你的模塊包含到模型類中。 – lalameat
是的,我接受它,一旦我在視圖中測試它。謝謝! – Beartech