2011-12-27 3 views
3

Привет, я хотел бы знать, возможно ли удалить ассоциацию в рельсах.Удалить модель ассоциации в Rails

Ну, у меня есть что-то похожее на это:

class Home < ActiveRecord::Base 
    include settings 
end 

На settings.rb у меня есть что-то похожее на этот

module Settings 
    attr_reader :person 
    attr_reader :address 

    def self.included(base) 
     base.belongs_to :city 
     base.belongs_to :entity 
     [...] 
    end 

    [...] 

end 

На главном классе город модель ассоциации на моем конкретном случае дона» Имеют смысл. И я должен найти способ удалить его, чтобы поддерживать мой код DRY.

Спасибо!

ПРИМЕЧАНИЕ: Дайте мне обратную связь перед тем, как проголосовать пожалуйста.

+0

Я не могу вспомнить какой-либо метод в ActiveRecord, но я все равно подойду к этой проблеме с противоположной стороны. Я думаю, что гораздо лучше не добавлять ассоциации, в которых вы не нуждаетесь. Один из вариантов - переместить все вызовы 'belongs_to' в отдельный метод, который будет принимать список необходимых ассоциаций. В этом случае вам придется вызывать этот метод явно после включения модуля, но он по-прежнему выглядит лучше, чем добавление всех и удаление ненужных ассоциаций. –

+0

Если есть только одно исключение, поместите другой код в класс Home, для других классов, которые повторно используют ваш модуль, используйте include. Много DRY не всегда удобно. – eveevans

+0

Я думаю, что вы немного педантичны в этом вопросе ... нет причин для удаления методов, отличных от того, чтобы экземпляр не ответил на них. И какова бы ни была причина этого, ну, это просто неясно. Уточните, пожалуйста, почему вы хотите сделать это вообще. –

ответ

2

Если вы просто не хотите, чтобы методы использовали remove_method, удалите их.

+0

Я могу сделать на моем классе model remove_method: city и он будет работать? – workdreamer

+0

Да, это будет сделано. –

+0

Это работает! Спасибо! – workdreamer

Смежные вопросы