Не удалось найти проблему ассоциации в направляющих

Я встретился с несколько аналогичной ситуацией в исследовательской группе, в которой я в настоящее время работаю. Это - группа биофизики, и мы используем LabVIEW повсеместно для управления нашими инструментами. Это абсолютно работает отлично: легко собрать UI, чтобы управлять всеми аспектами Ваших инструментов, просмотреть его состояние и сохранить Ваши данные.

И теперь я должен мешать мне писать напыщенную речь на 5 страниц, потому что для меня LabVIEW был кошмаром. Позвольте мне вместо этого попытаться суммировать некоторые за и против:

Правовая оговорка я не эксперт LabVIEW, я мог бы сказать вещи, которые смещаются, устаревшие или просто неправильно:)

профессионалы LabVIEW

  • Да, легко учиться . Многие PhD в нашей группе, кажется, получили достаточно навыков для взламывания далеко в течение нескольких недель, или еще меньше.
  • Библиотеки . Это - важный пункт. Необходимо было бы тщательно привлечь это по делу о собственной ситуации (я не знаю то, в чем Вы нуждаетесь, если существуют хорошие библиотеки LabVIEW для нее, или если существуют альтернативы на других языках). В моем случае, открытии, например, хорошая, быстрая библиотека построения диаграммы в Python была основной проблемой, которая препятствовала тому, чтобы я переписал некоторые наши программы в Python.
  • Вашей школе можно было уже установить его и выполнение.

недостатки LabVIEW

  • , возможно также легко учиться. В любом случае кажется, что никто действительно не потрудился изучать лучшие практики, таким образом, программы быстро становятся полной, непоправимой путаницей. Несомненно, это также обязано произойти с основанными на тексте языками, если Вы не осторожны, но IMO, намного более трудно сделать вещи правильно в LabVIEW.
  • имеют тенденцию быть главные проблемы в LabVIEW с нахождением под-Виса (сгладьте к версии 8.2, я думаю). LabVIEW поступает по-своему знания, где найти библиотеки и под-Вис, который делает очень легким полностью повредить Ваше программное обеспечение. Это делает крупные проекты болью, если у Вас нет кого-то вокруг, кто знает, как обработать это.
  • Получение LabVIEW работать с управлением версиями является болью . Несомненно, это может быть сделано, но в любом случае я воздержался бы от использования встроенного VC. Выезд LVDiff для инструмента разности LabVIEW, но даже не думают о слиянии.

(Последние две точки делают работу в команде на одном проекте трудной. Это, вероятно, важно в Вашем случае)

  • , Это является персональным, но я нахожу, что много алгоритмов просто не работают, когда запрограммировано визуально. Это - путаница .
    • Одним примером является материал, который строго последователен; это становится громоздким довольно быстро.
    • трудно иметь обзор кода.
    • при использовании Sub-VI для маленьких задач (точно так же, как это - хорошая практика для создания функций, которые выполняют маленькую задачу, и что соответствие на одном экране), Вы не можете только дать им имена, но необходимо потянуть значки для каждого из них. Это становится очень раздражающим и громоздким в течение только нескольких минут, таким образом, Вы становитесь очень соблазненными не для помещения материала в sub-VI. Это - просто слишком много стычки. Btw: создание действительно хорошего значка может занять профессиональные часы. Пойдите попытка сделать уникальный, сразу понятный, распознаваемый значок для каждого sub-VI, который Вы пишете:)
  • у Вас будет кистевой туннель в течение недели. Гарантируемый.
  • @Brendan: услышьте, услышьте!

Заключительные замечания

Что касается Ваш "должны я писать свои собственные модули" вопрос: я не уверен. Зависит от Ваших ограничений времени. Не проводите время при перестраивании колеса, если Вы не имеете к. Слишком легко провести дни на запись, что низкий уровень кодирует и затем понимает, что у Вас закончилось время. Если это означает выбор LabVIEW пойдите для него.

, Если были бы простые способы объединить LabVIEW и, например, C++, я хотел бы услышать об этом: это может дать Вам лучший из обоих миров, но я сомневаюсь, что существует.

, Но удостоверяются, что Вы и Ваша команда проводите время при изучении лучших практик. Рассмотрение кода друг друга. Изучение друг от друга. Запись применимого, понятного кода. И весело проведение время!

И простите мне за звучание острым и возможно несколько педантичным. Это просто, что LabVIEW был реален кошмар для меня:)

35
задан Ash 23 November 2009 в 05:09
поделиться

2 ответа

В классе ApplicationForm вам необходимо указать связь ApplicationForms с 'form_questions'. Он еще не знает об этом. Везде, где вы используете : до , вам нужно сначала указать, где найти эту запись. Та же проблема с другими вашими классами.

Итак,

# application_form.rb
class ApplicationForm < ActiveRecord::Base
  has_many :form_questions
  has_many :questions, :through => :form_questions
end

# question.rb
class Question < ActiveRecord::Base
  belongs_to :section
  has_many :form_questions
  has_many :application_forms, :through => :form_questions
end

# form_question.rb
class FormQuestion < ActiveRecord::Base
  belongs_to :question
  belongs_to :application_form
  belongs_to :question_type
  has_many :form_questions_answers
  has_many :answers, :through => :form_question_answers
end

Предполагается, что вы так настроили.

64
ответ дан 27 November 2019 в 06:51
поделиться

Вам необходимо включить

has_many :form_question_answers

в вашу модель FormQuestion. : Through ожидает таблицу, которая уже была объявлена ​​в модели.

То же самое и для других ваших моделей - вы не можете предоставить ассоциацию has_many: through , пока не объявите сначала ] has_many

# application_form.rb
class ApplicationForm < ActiveRecord::Base
  has_many :form_questions
  has_many :questions, :through => :form_questions
end

# question.rb
class Question < ActiveRecord::Base
  belongs_to :section
  has_many :form_questions
  has_many :application_forms, :through => :form_questions
end

# form_question.rb
class FormQuestion < ActiveRecord::Base
  belongs_to :question
  belongs_to :application_form
  belongs_to :question_type
  has_many :form_question_answers
  has_many :answers, :through => :form_question_answers
end

Похоже, ваша схема может быть немного нестабильной, но дело в том, что вам всегда нужно сначала добавить has_many для таблицы соединения, а затем добавить сквозную.

13
ответ дан 27 November 2019 в 06:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: