2013-09-04 2 views
6

Я пытаюсь использовать Ruby on Rails 4.0 Расширение HStore для PostreSQL. Я хотел бы сделать одно из моих полей HStore требуемого:Как установить значение по умолчанию для поля HStore в файле YAML в Ruby on Rails?

class Thing < ActiveRecord::Base 
    # ... 
    validates :field_name, presence: true 
    # ... 
end 

Будучи новым для HStore, я создал леску для Thing (rails g scaffold Thing field_name:hstore). Делая это мой арматуре файл (test/fixtures/things.yml) не включают в себя значение по умолчанию для field_name:

one: 
    # ... 
    field_name: 
    # ... 

Что вызывает rake test на провал, так как нет никакого значения, при условии, для требуемой области.

Мой вопрос: Как установить значение в файле настроек YAML для field_name, чтобы мои тесты прошли?

До сих пор я знаю:

  1. Это не работы:

    one: 
        # ... 
        field_name: 
        small: 2 
        medium: 5 
        large: 4 
        # ... 
    
  2. Это также не работы:

    one: 
        # ... 
        field_name: {"small"=>"2", "medium"=>"5", "large"=>"4"} 
        # ... 
    

Спасибо!

+0

ли установка так, как я описал работу? – derekyau

+0

@derekyau Нет, были синтаксические ошибки для файла YAML. –

+0

Ahh Я вижу, так работает сейчас? – derekyau

ответ

9

Я использую Rails 4, и это мой файл fixture, где options - поле hstore.

default: 
    title: 'something' 
    prefix: 'xxx' 
    options: '"something"=>"2", ""=>"5"' 

Я не мог узнать, как правильно использовать Хэш, поэтому я просто его закодировал.

+0

Это работает! Благодаря! –

+0

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

7

В основном то, что вы должны сделать, это сгенерировать хэш в YAML

default: 
    options: 
    :something: 2 
    :something_else: 3 
+0

Вопрос - это, похоже, сохраняет хэш как «строку», давая мне ошибку «неопределенные методы» для «{\" prompt \ "=> \" Полное имя? \ "}": String'. Вы знаете, почему это происходит? – sscirrus

+0

Как вы разбираете свой файл yaml? То, что вы получаете, в формате JSON. –

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