Web应用程序设计 - 处理复杂数据

时间:2012-04-02 08:35:04

标签: php ruby-on-rails codeigniter backbone.js

我正在构建一个内部应用程序,显示我们员工的技能和技能。但是,我无法处理大量数据。我不确定我是否以正确的方式做到这一点,我真的想要一些反馈。

我想在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进行另一次尝试。整个事情目前只是让人感到笨拙,我不能说我现在非常喜欢这项工作。

由于

1 个答案:

答案 0 :(得分:1)

我认为你仍然在想像一个php编码器。你没有参加rails提供的约定。你将这样的外键命名为:employeeid但它应该是employee_id这非常重要,因为你不像在php中那样手动构建sql查询。对于employeehasskill模型中的例子,您需要添加以下行:

belongs_to :employee
belongs_to :skill

因此,在您的employeeskill模型中,您需要添加

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