小编Jon*_*sen的帖子

如何在不设置直接belongs_to的情况下设置一种"belongs_to:through"?

我知道"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

activerecord ruby-on-rails

33
推荐指数
3
解决办法
2万
查看次数

Jenkins:如何在Maven"目标和选项"中使用预构建shell中的变量

我在詹金斯有一个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结账后立即设置,即在预构建步骤之前,并且不支持表达式评估.

maven jenkins

30
推荐指数
2
解决办法
5万
查看次数

标签 统计

activerecord ×1

jenkins ×1

maven ×1

ruby-on-rails ×1