Наследование в одной таблице с Formtastic - PullRequest
2 голосов
/ 14 июля 2011

Итак, у меня есть две модели, которые наследуются от другой следующим образом:

class OneTime < Step
  has_one :due_date
  accepts_nested_attributes_for :due_date
end

class Repeatable < Step
  has_many :due_dates
  accepts_nested_attributes_for :due_dates
end

class Step < ActiveRecord::Base
  belongs_to :goal
end

У меня также есть другая модель, вложенная в подклассы:

class DueDate < ActiveRecord::Base
  belongs_to :step
end

Тогда у меня есть форманапример, используя formtastic:

= semantic_form_for [@goal, @step], :url => goal_step_path(@goal, @step), :html => { :class => "ajax"} do |f|
  = f.inputs :id => "step_#{@step.id}_description", :class => "description" do
    = f.input :description, :input_html => { :autofocus => "autofocus"}
  = f.semantic_fields_for :due_date do |due_date|
    = due_date.inputs :date_due, :as => :string, :input_html => { :class => "datepicker"}, :label => "Due Date"
  = f.buttons do
    = f.commit_button

Проблема заключается в том, что при попытке загрузить эту форму я получаю следующую ошибку:

Showing /Users/dc/launchtools/app/views/steps/_form.html.haml where line #4 raised:

SQLite3::SQLException: no such column: due_dates.one_time_id: SELECT  "due_dates".* FROM "due_dates" WHERE ("due_dates".one_time_id = 121) LIMIT 1
Extracted source (around line #4):

Я пробовал много разных вещей, чтобыисправить это и ничего не сработало.Я также просмотрел stackoverflow и google и не нашел ничего, что помогло бы решить эту проблему.Возможно, я не подхожу к проблеме правильно, но мне нужно какое-то направление.Есть идеи?

1 Ответ

0 голосов
/ 18 июля 2011

Вы пытаетесь передать несколько аргументов due_date.inputs, которые, по его мнению, являются несколькими полями, вместо этого вы хотите использовать due_date.input (в единственном числе), например:

= due_date.input :date_due, :as => :string, :input_html => { :class => "datepicker"}, :label => "Due Date"
...