Új vagyok a Railsben, de összetett elsődleges kulcsot kell használnom a Ruby 1.9.2-t és a Rails 3-at futtató alkalmazásomban. Nem tudom megfelelően működésre bírni az összetett kulcsokat a Ruby on Rails alkalmazásban. Követtem a a compositekeys webhelyen található utasításokat, de továbbra is ugyanazt a hibaüzenetet kapom: nincs ilyen fájl load -- összetett_elsődleges_kulcsok
1 - sudo gem install composite_primary_keys
2 - Adja hozzá a szükséges 'composite_primary_keys' értéket a conf/environment.rb fájl végéhez
3 - Hozzáadta a set_primary_keys
A drágakő listám így néz ki:
abstract (1.0.0)
actionmailer (3.0.1)
actionpack (3.0.1)
activemodel (3.0.3, 3.0.1)
activerecord (3.0.1)
activeresource (3.0.1)
activesupport (3.0.3, 3.0.1)
arel (2.0.3, 1.0.1)
builder (2.1.2)
bundler (1.0.3)
composite_primary_keys (2.3.5.1)
A domain osztályom így néz ki:
class Radioreport < ActiveRecord::Base
set_primary_keys :service_id, :date_id
belongs_to :report_date, :foreign_key => "date_id"
belongs_to :service, :foreign_key => "service_id"
...
A környezetfájlom pedig így néz ki:
# Load the rails application
require File.expand_path('../application', __FILE__)
# Initialize the rails application
Upreports::Application.initialize!
require 'composite_primary_keys'
A "rake teszt" futtatásakor a következő hibaüzenetet kapom:
rake aborted!
no such file to load -- composite_primary_keys
Az egységteszt a következő:
require 'test_helper'
require 'rubygems'
require 'composite_primary_keys'
class RadioreportTest < ActiveSupport::TestCase
fixtures :radioreports, :services, :genres, :groups, :locations, :report_dates
def setup
@radioReport = Radioreport.new
end
def test_should_put_all_radios_and_totals_in_a_hash
transactions = Radioreport.find(:all)
reportTransactions = @radioReport.getRadioTotalsByDayMap(transactions)
assert_not_nil(reportTransactions)
assert_equal(2, reportTransactions.size)
previousKey = nil
previousValue = nil
reportTransactions.each{|key, value|
if(previousKey == nil || previousValue == nil)
previousKey = key
previousValue = value
else
assert_not_nil(key)
assert_not_equal(previousKey, key)
assert_not_nil(value)
assert_not_equal(previousValue, value)
end
}
end
Megnéztem a következő szálat, de ez az egyik nem vonatkozik. Már megnéztem a rake-emet, drágakömet stb.
Köszönöm srácok! ;)