Почему Ruby on Rails не может найти этот класс? - PullRequest
1 голос
/ 30 июня 2009

Хорошо. Итак, у меня есть три модели, а, б и в. a has_one c, b has_many cs, а c принадлежит_ как a, так и b. Когда я ссылаюсь на «cs» в методе b, это получается нормально. Но когда я ссылаюсь на «c» в методе a, он не может найти ссылку; он говорит, что «с» является «неопределенной локальной переменной или методом». Я знаю , что объекты c создаются, потому что они появляются в базе данных MySQL, и я могу получить к ним отличный доступ из модели b, но не могу получить к ним доступ из модели.

Ответы [ 2 ]

1 голос
/ 10 июля 2009

Ваша проблема связана с указанием отношений.

Кажется, вы ищете что-то в этом роде

class a < ActiveRecord::Base
  has_one :c, :through=>:b
end


class b < ActiveRecord::Base
  has_many :c
end


class a < ActiveRecord::Base
  belongs_to :b
end

Это должно позволить вам правильно выполнить запрос. Надеюсь, это поможет.

0 голосов
/ 30 июня 2009

класс A : уничтожить

класс B

класс C

Создать метод в as_controller:

def create @a = a.new (params [: a]) params [: b] [: venue_id] = get_venue_id_for_b, если только params [: venue] [: name] .blank? @ a.user = @user @ a.b = B.new (params [: b]) @b = @ a.b @ B.valid? @ A.valid

respond_to do |format|
  if @a.valid? and @b.valid?
    if (@a.duplicate? or @a.save) and @b.save
      flash[:notice] = 'a was successfully created.'
      format.html { redirect_to a_url(@a) }
      format.xml  { head :created, :location => a_url(@a) }
    else
      format.html { render :action => "new" }
      format.xml { render :xml => @a.errors.to_xml and @b.errors.to_xml }
    end
  else
    format.html { render :action => "new" }
    format.xml  { render :xml => @a.errors.to_xml and @b.errors.to_xml }
  end
end

конец

Этот метод в модели B работает:

def q ставит cs.class конец

Этот метод в модели A не работает:

def q ставит класс конец

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...