В rails, как уничтожить «элемент таблицы соединений», не удаляя реальную запись? - PullRequest
10 голосов
/ 31 августа 2010

Я запутался сейчас, я не знаю, как удалить / уничтожить запись в объединительной таблице:


class Task < ActiveRecord::Base
  belongs_to :schema
  belongs_to :to_do
end

class Todo < ActiveRecord::Base
  belongs_to :schema
  has_many :tasks
end

class Shcema < AcitveRecord::Base
  has_many :todos
  has_many :tasks, :through => :todos
end

>> sc = Schema.new
>> sc.tasks << Task.new
>> sc.tasks << Task.new
>> sc.tasks << Task.new
...
>> sc.tasks.delete(Task.first) # I just want to delete/destroy the join item here.
# But that deleted/destroyed the Task.first.

Что я могу сделать, если я просто хочу уничтожить элемент отношения?

Ответы [ 2 ]

7 голосов
/ 04 августа 2011

Если вы хотите удалить все задачи в sc:

sc.tasks.delete_all

Если вы хотите удалить определенную задачу в sc:

sc.tasks.delete_at(x) where x is the index of the task

or

sc.tasks.delete(Task.find(x)) where x is the id of Task

Надеюсь, это поможет.

1 голос
/ 15 февраля 2016

Если вы хотите удалить все записи из объединяемой таблицы, например amenities_lodgings, без использования какого-либо объекта, вы можете использовать:

ActiveRecord::Base.connection.execute("DELETE  from amenities_lodgings")
...