Как я могу проверить для принадлежащих вам и has_many в Rails? - PullRequest
8 голосов
/ 13 сентября 2010

Я использую rspec и пытаюсь проверить, есть ли в моей модели y много х.Я перепробовал все виды вещей, включая циклический просмотр массива методов, и не могу найти хороший метод в Интернете.Так что я должен использовать?

Ответы [ 3 ]

19 голосов
/ 13 сентября 2010

Без особого взлома вы можете использовать замечательный самоцвет: http://github.com/carlosbrando/remarkable

Взято из замечательных документов:

    describe Post do
      it { should belong_to(:user) }
      it { should have_many(:comments) }
      it { should have_and_belong_to_many(:tags) }
    end
7 голосов
/ 13 сентября 2010

Вы можете поразмышлять о классе:

MyModel.reflect_on_association(:x).macro == :has_one

Вероятно, проще, если вы просто используете Следует, есть вспомогательные методы, поэтому он выглядит намного чище: it { should have_many(:x) }

1 голос
/ 13 сентября 2010

вот решение, независимое от rspec, ключ должен использовать reflect_on_assocation

class MyModel < ActiveRecord::Base
  has_many :children
  belongs_to :owner
end

reflection_children = MyModel.reflect_on_association(:children)

if !reflection_children.nil?
  if reflection_children.macro == :has_many
    # everything is alright
  else
    # it's not has_many but exists
  end
else
  # it doesn't exist at all !
end

reflection_owner  = MyModel.reflect_on_association(:owner)

if !reflection_owner.nil?
  if reflection_owner.macro == :belongs_to
    # everything is alright!
  else
    # it's not belongs_to but exists
  end
else
  # it doesn't exist at all!
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...