Я не могу найти способ сохранить значения в хэше непосредственно в рельсах - PullRequest
0 голосов
/ 21 июня 2010

Я новичок в рельсах, и я исследовал целый день.Я думаю, что моя проблема проста.

Есть таблица questions_tags_relation , в ней два столбца (без идентификатора):

columns:
question_id -> string
tag_id -> string

И у меня есть хэш :

record = {:question_id=>'111111', :tag_id=>'22222'}

И нет модели 'QuestionsTags' , и я не хочу ее создавать.

Теперь я могу получитьActiveRecord::Base.connection, но как вставить хеш в таблицу с помощью простого кода?Я надеюсь, что это save метод:

ActiveRecord::Base.connection.save 'questions_tags', record

Есть ли такой метод?


ОБНОВЛЕНИЕ

Язадавая этот вопрос, потому что я столкнулся с некоторыми проблемами при сохранении данных в базе данных с использованием моделей ActiveRecord.Возможно, использование connection напрямую будет проще.Некоторые таблицы являются join таблицами, у них нет первичного ключа, поэтому в моем примере нет id.Я надеюсь, что есть простой способ сохранить хэш в таблице, но я не могу его найти.Спасибо, друзья

Ответы [ 2 ]

1 голос
/ 22 июня 2010

В соединительной таблице для отношения многие ко многим у вас не должно быть поля id. На самом деле, рельсы будут громко проваливаться, если вы попытаетесь это сделать, так как это запутывает вещи.

Как правило, если вы не хотите, чтобы создавалась модель соединения, просто используйте has_and_belongs_to_many , которая не требует этого. Затем вы можете сказать @question.tags, который выполнит соединение через соответствующую таблицу. Вы должны использовать соответствующее имя таблицы (или переопределить его с помощью: join_table).

После создания ассоциации вы можете использовать ее следующим образом:

@question.tags << Tag.first
@question.tags.each { |t| t.name }
# ... and so on

Edit: Я знаю, что это не отвечает на вопрос о том, как подключиться к базе данных, но я надеюсь, что я отвечаю на вопрос «за спиной» о том, как получить доступ ко многим отношениям без создания модели соединения промежуточная таблица.

0 голосов
/ 21 июня 2010

Если вы не хотите ID, то лучше всего будет обратиться непосредственно к вашей БД.В противном случае просто добавьте id feild и создайте модель, это разумно, если у вас нет серьезной причины не делать этого.

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