FactoryGirlでテストデータを定義する時に、transientとtraitを活用すると色々捗るという話。 transientは実際に作成するデータと直接関係無い新しいattributeを定義する機能。 そこで定義されたものは実際のmodelにはセットされないしattributes_forでも出力されません。 何のために使うかというと作成時に挙動を変更するためのフラグや追加データとして利用するのが一般的です。 traitは属性の定義を一纏めにして名前を付けられる機能です。 parentを指定したfactoryの継承とは違い、traitは単体ではfactoryとして機能しません。 あるfactoryの特定の状態に名前を付けて、付け外しできるようにする、というのが主な使い方になります。 例えば、あるfactoryをある時はadminある時は非adminで作りたい時等に有効です。 個人的に
FactoryGirlでテストデータを作るとき、before_createなどのコールバックも実行されて、いろいろめんどくさいときがある。 FactoryGirl.define do factory :user do name 'naoty' age 18 after(:build) do User.skip_callback(:create, :before, :hoge_method, :fuga_method) end end end skip_callbackはメソッドごとにスキップするか設定できる。 似たようなものにreset_callbacksがあるけど、これはイベントに設定されてるコールバックメソッドのすべてをスキップする。 after(:build)のところはスキップしたいコールバックのタイミングによって、調整する必要あると思う。 バージョン factory_girl (3
下記のような UserGroup, User, Blog があるとします。 # == Schema Information # # Table name: user_groups # # id :integer not null, primary key # name :string(255) # created_at :datetime not null # updated_at :datetime not null # class UserGroup < ActiveRecord::Base end # == Schema Information # # Table name: users # # id :integer not null, primary key # name :string(255) # user_group_id :integer # created_at :da
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く