试图重构代码以提供干净的关联
游戏有一个HOME_TEAM和一个AWAY_TEAM
TEAM有许多游戏作为HOME_TEAM或AWAY_TEAM
GAME和TEAM之间的关联是直接的HABTM但我需要表示与GAME相关联的两个TEAM中的哪一个是HOME_TEAM,哪个是AWAY_TEAM.我是通过添加额外的字段和关联来实现的,但这显然非常潮湿而不是干燥.我知道答案已经过去,但我似乎已经脑部崩溃,并且无法完全理解这一点.
基本上我希望能够做Game.teams(返回两个团队的集合)和Game.home_team(获取并设置TEAM到home_team)和Game.away_team(获取并设置TEAM到away_team)
很抱歉提出这样一个直截了当的声音查询,但它只是离我而去
class Game < ActiveRecord::Base
belongs_to :home_team
belongs_to :away_team
has_and_belongs_to_many :teams
end
class HomeTeam < ActiveRecord::Base
belongs_to :team
has_one :games
end
class AwayTeam < ActiveRecord::Base
belongs_to :team
has_one :games
end
class Team < ActiveRecord::Base
has_and_belongs_to_many :games
has_many :away_teams
has_many :home_teams
end
Run Code Online (Sandbox Code Playgroud)
所有帮助非常感谢
彼得
我有一个干净的构建系统如下
Ubuntu 11.04
Rvm 1.13.5
Ruby 1.9.3p194
Rails 3.2.3
宝石1.8.24
MySql 5.5.24-1(安装在/ usr/local中)
我正在尝试安装mysql2 gem(0.3.11)并遇到以下问题:
pal@smurf01:~$ sudo gem install mysql2
[sudo] password for pal:
Building native extensions. This could take a while...
ERROR: Error installing mysql2:
ERROR: Failed to build gem native extension.
/usr/local/rvm/rubies/ruby-1.9.3-p194/bin/ruby extconf.rb
checking for rb_thread_blocking_region()... yes
checking for rb_wait_for_single_fd()... yes
checking for mysql.h... yes
checking for errmsg.h... yes
checking for mysqld_error.h... yes
creating Makefile
make
compiling client.c
client.c: In function 'rb_raise_mysql2_error':
client.c:98:3: warning: ISO C90 forbids mixed …Run Code Online (Sandbox Code Playgroud) 我真的非常迫切需要这个问题的帮助,而且还有点失落.
我正在尝试使用Capistrano Ext部署新的生产服务器以允许登台和生产服务器,但它无法成功运行捆绑安装 - 部署.
cap staging deploy适用于现有的Ubuntu系统,但新服务器是一个常量失败,如下所示
my-app$ sh -c 'cd /var/www/html/rails/myapp/releases/20120519174459&& export PATH=/usr/local/bin:/usr/local/mysql/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/opt/local/bin:/usr/local/rvm/gems/ruby-1.9.3-p194/bin:/usr/local/rvm/gems/ruby-1.9.3-p194@global/bin:/usr/local/rvm/rubies/ruby-1.9.3-p194/bin:/usr/local/rvm/bin && bundle install --deployment'
Fetching gem metadata from http://rubygems.org/......
Fetching gem metadata from http://rubygems.org/..
Installing rake (0.9.2.2)
Gem::LoadError: Could not find rubygems-bundler (>= 0) amongst []
An error occured while installing rake (0.9.2.2), and Bundler cannot continue.
Make sure that `gem install rake -v '0.9.2.2'` succeeds before bundling.
Run Code Online (Sandbox Code Playgroud)
在任何其他目录中,ruby -v和rails -v会产生预期的结果
my-home$ ruby -v
ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux]
my-home$ rails -v
Rails 3.2.2 …Run Code Online (Sandbox Code Playgroud)