Я боролся с раздражающей вещью весь день.
У меня есть класс модели, который подключается к другому с помощью соединения has_many. Это работает нормально, но когда я пытаюсь получить доступ к не-db методам из класса, я получаю ошибку, что модель не содержит метод Я поместил метод в attr_accessible, так что я думаю, что он должен быть доступен.
Вот модель для первого класса:
class Recipe < ActiveRecord::Base
validates :name, :presence => true,
:length => { :maximum => 100 }
attr_accessible :ingredient_recipes_attributes
has_many :ingredient_recipes, :foreign_key => "recipe_id"
has_many :ingredients, :through => :ingredient_recipes
accepts_nested_attributes_for :ingredient_recipes, :allow_destroy => true
end
и вторая модель:
class IngredientRecipe < ActiveRecord::Base
attr_accessor :ingrNameFromUser
set_primary_key :ingredient_id, :recipe_id
attr_accessible :ingrNameFromUser, :readable_qty, :ingredient_description
belongs_to :recipe, :foreign_key => "recipe_id"
belongs_to :ingredient, :foreign_key => "ingredient_id"
# belongs_to :ndbfoodde, :foreign_key => "ingredient_id"kki"
delegate :description, :to => :ingredient, :prefix => "ingredient", :allow_nil => true
def readable_qty
qty.to_s + " gr."
end
def readable_qty=(qty)
self.qty = qty.to_f + 2
end
end
когда я пытаюсь получить доступ к readable_qty через вид, подобный этому:
<% f.fields_for :ingredient_recipes do |rif| %>
<td>
<%= rif.autocomplete_field :ingrNameFromUser, recipes_autocomplete_ingredient_description_path, :value => @recipe.ingredient_recipes[i].ingrNameFromUser, :width=>1000, :size=>60 %>
</td>
<td>
<%= rif.text_field :readable_qty %>
</td>
Я получаю сообщение об ошибке:
undefined method `readable_qty' for #<IngredientRecipe:0x00000103322068>
Extracted source (around line #59):
56: </td>
57:
58: <td>
59: <%= rif.text_field :readable_qty %>
60: </td>
61:
62: <td>
Кто-нибудь может увидеть, что я делаю неправильно?