我知道"belongs_to:through"是无效的,它只是我试图表达我想要达到的目标,只是忍受我一段时间......
这就是我得到的:
class League
has_many :divisions
end
class Division
belongs_to :league
has_many :teams
end
class Team
belongs_to :division
has_many :players
end
class Player
belongs_to :team
end
Run Code Online (Sandbox Code Playgroud)
现在,为了制作"棒球卡"视图表格,我需要:
name
team.name
team.division.name
team.division.league.name
Run Code Online (Sandbox Code Playgroud)
那么,有没有办法设置"belongs_to:through"直接从'players_controller'访问'division.name'而没有'team'.字首 ??我必须从"播放器"到"分区"访问许多列,因此寻找一种方法来"直接"访问这些列.
一个选项是在'players'表中包含'division_id'列,但我被告知它会破坏关系数据模型,因为如果数据选择功能没有得到妥善处理,它将允许不一致(例如玩家A在A组,在A组,但是玩家A的division_id列设置为B组.
是否有可能形成一个"象征性的联系",例如"分裂"现在指的是'team.division','联盟'现在指的是'team.division.league'?
或者,每次使用完整路径是唯一真正的选择吗?
希望有人能提供帮助.
Br,Jonas
我在詹金斯有一个Maven工作.在实际构建步骤之前,我有一个"执行shell"预构建步骤.在那个shell中我设置了一个变量:
REVISION=$(cat .build_revision)
Run Code Online (Sandbox Code Playgroud)
我想在"目标和选项"中的Maven构建作业中使用该变量:
clean install -Drevision=${REVISION}
Run Code Online (Sandbox Code Playgroud)
但这不起作用!"Drevision"设置为"$ {REVISION}"而不是$ {REVISION}的实际值.输出:
Executing Maven: -B -f /home/gerrit/.jenkins/jobs/<job_name>/workspace/pom.xml clean install -Drevision=${REVISION}
Run Code Online (Sandbox Code Playgroud)
它适用于Jenkins环境变量:
clean install -Dbuild=${BUILD_NUMBER}
Run Code Online (Sandbox Code Playgroud)
它将"Dbuild"设置为实际的构建号.输出:
Executing Maven: -B -f /home/gerrit/.jenkins/jobs/<job_name>/workspace/pom.xml clean install -Dbuild=54
Run Code Online (Sandbox Code Playgroud)
我的问题:如何在Maven"目标和选项"中使用shell变量?
编辑:
我尝试在预构建shell之后使用Jenkins EnvInject插件 "注入环境变量",现在可以通过例如构建后的shell访问我的变量,但它仍然无法在Maven"目标和选项"中使用.
然后可以使用EnvInject插件设置"向构建过程注入环境变量",这实际上使这些变量在Maven"目标和选项"中可用,但这些变量在SCM结账后立即设置,即在预构建步骤之前,并且不支持表达式评估.