我正在构建一个内部应用程序,显示我们员工的技能和技能。但是,我无法处理大量数据。我不确定我是否以正确的方式做到这一点,我真的想要一些反馈。
我想在Rails中创建API并在Backbone.js的基础上构建,因为我认为这将是一个很好的学习体验,因为我希望它是一个非常敏感和流畅的,这些技术看起来很合适。 / p>
但是,由于我在这里处理大量数据,我无法在Rails中完成它。我有点无法通过我的模型和模型关系重新创建我想到的数据库模式。
也许在这里发布数据库架构是一个好主意,因为它是这个问题中非常重要的一部分:
employee skill skillset department
-------- ------ -------- ----------
id id id id
name name name name
firstname
description
email
departmentid
departmenthasskillset employeehasskill
--------------------- ----------------
departmentid employeeid
skillsetid skillid
rating
skillsethasskill
----------------
skillsetid
skillid
我已经开始使用PHP / CodeIgniter,但是我并不喜欢我采用的方法,我真的想从Rails / Backbone开始。有没有办法在Rails / ActiveRecord中执行这些复杂的查询?我将如何解决这个问题?
在我的首页上,我展示了所有员工,我可以使用isotope.js插件根据部门,技能和技能进行过滤。这也意味着我需要在第一个请求上加载大量数据。我现在把所有这些数据放在一个巨大的数组中,对于一个员工来说就像这样:
[51] => Array
(
[id] => 51
[name] => Name
[firstname] => Firstname
[description] => Multimedia developer
[email] => firstname.name@company.com
[departmentid] => 9
[skills] => Array
(
[html] => 3
[css] => 3
[javascript] => 3
[jquery] => 3
[php] => 2
)
[skillsets] => Array
(
[1] => frontend
[2] => backend
)
[department] => development
[class] => html css javascript jquery php frontend backend development
)
(同位素需要'class'索引,所以我可以过滤。)
这是一个不错的方法(在一个巨大阵列中加载所有数据),我能在Rails中完成吗?或者对不同的数据提出单独的请求会更好吗?
欢迎任何反馈,因为我仍然没有决定是否继续在PHP中使用这个或者转回Rails进行另一次尝试。整个事情目前只是让人感到笨拙,我不能说我现在非常喜欢这项工作。
由于
答案 0 :(得分:1)
我认为你仍然在想像一个php编码器。你没有参加rails提供的约定。你将这样的外键命名为:employeeid
但它应该是employee_id
这非常重要,因为你不像在php中那样手动构建sql查询。对于employeehasskill
模型中的例子,您需要添加以下行:
belongs_to :employee
belongs_to :skill
因此,在您的employee
和skill
模型中,您需要添加
has_many :employeehasskills
在您的employee
模型中,您还应添加:
has_many :skills, :through => :employeehasskills
这是您在rails中定义关系的方式。尊重约定很重要,因为如果你说belongs_to :employee
rails默认等待你的外键是employee_id
。这将使您能够执行以下操作:
e=Employee.find(<the id here>)
e.skills
这将返回员工的技能。这是一个退出不同的PHP方法,但它值得学习它。我建议你阅读ActiveRecord的官方文档:http://api.rubyonrails.org/classes/ActiveRecord/Base.html